home *** CD-ROM | disk | FTP | other *** search
/ X User Tools / X User Tools (O'Reilly and Associates)(1994).ISO / sun4c / archive / tcltk.z / tcltk / man / cat3 / CrtMathFnc.3 < prev    next >
Text File  |  1994-09-20  |  5KB  |  133 lines

  1.  
  2.  
  3.  
  4. Tcl_CreateMathFunc(3)Tcl Library Procedures                   7.0
  5.  
  6.  
  7.  
  8. _________________________________________________________________
  9.  
  10. NAME
  11.      Tcl_CreateMathFunc - Define a new math function for  expres-
  12.      sions
  13.  
  14. SYNOPSIS
  15.      #include <tcl.h>
  16.  
  17.      Tcl_CreateMathFunc(_i_n_t_e_r_p, _n_a_m_e, _n_u_m_A_r_g_s, _a_r_g_T_y_p_e_s, _p_r_o_c, _c_l_i_e_n_t_D_a_t_a)
  18.  
  19. ARGUMENTS
  20.      Tcl_Interp      *_i_n_t_e_r_p      (in)      Interpreter in  which
  21.                                             new  function will be
  22.                                             defined.
  23.  
  24.      char            *_n_a_m_e        (in)      Name  for  new  func-
  25.                                             tion.
  26.  
  27.      int             _n_u_m_A_r_g_s      (in)      Number  of  arguments
  28.                                             to    new   function;
  29.                                             also  gives  size  of
  30.                                             _a_r_g_T_y_p_e_s array.
  31.  
  32.      Tcl_ValueType   *_a_r_g_T_y_p_e_s    (in)      Points  to  an  array
  33.                                             giving  the permissi-
  34.                                             ble  types  for  each
  35.                                             argument to function.
  36.  
  37.      Tcl_MathProc    *_p_r_o_c        (in)      Procedure that imple-
  38.                                             ments the function.
  39.  
  40.      ClientData      _c_l_i_e_n_t_D_a_t_a   (in)      Arbitrary    one-word
  41.                                             value to pass to _p_r_o_c
  42.                                             when it is invoked.
  43. _________________________________________________________________
  44.  
  45.  
  46. DESCRIPTION
  47.      Tcl allows a number of mathematical functions to be used  in
  48.      expressions,     such    as    sin,    cos,    and    hypot.
  49.      Tcl_CreateMathFunc allows  applications  to  add  additional
  50.      functions  to  those  already  provided by Tcl or to replace
  51.      existing functions.  _N_a_m_e is the name of the function as  it
  52.      will  appear  in expressions.  If _n_a_m_e doesn't already exist
  53.      as a function then a new function is created.   If  it  does
  54.      exist,  then the existing function is replaced.  _N_u_m_A_r_g_s and
  55.      _a_r_g_T_y_p_e_s describe the arguments to the function.  Each entry
  56.      in the _a_r_g_T_y_p_e_s array must be either TCL_INT, TCL_DOUBLE, or
  57.      TCL_EITHER to indicate whether  the  corresponding  argument
  58.      must  be  an  integer, a double-precision floating value, or
  59.      either, respectively.
  60.  
  61.  
  62.  
  63. Tcl                                                             1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. Tcl_CreateMathFunc(3)Tcl Library Procedures                   7.0
  71.  
  72.  
  73.  
  74.      Whenever the function is invoked in an expression  Tcl  will
  75.      invoke  _p_r_o_c.   _P_r_o_c  should  have arguments and result that
  76.      match the type Tcl_MathProc:
  77.           typedef int Tcl_MathProc(
  78.                ClientData _c_l_i_e_n_t_D_a_t_a,
  79.                Tcl_Interp *_i_n_t_e_r_p,
  80.                Tcl_Value *_a_r_g_s,
  81.                Tcl_Value *resultPtr);
  82.  
  83.      When _p_r_o_c is invoked the  _c_l_i_e_n_t_D_a_t_a  and  _i_n_t_e_r_p  arguments
  84.      will  be  the  same  as  those passed to Tcl_CreateMathFunc.
  85.      _A_r_g_s will point to an array of _n_u_m_A_r_g_s Tcl_Value structures,
  86.      which describe the actual arguments to the function:
  87.           typedef struct Tcl_Value {
  88.                Tcl_ValueType _t_y_p_e;
  89.                int _i_n_t_V_a_l_u_e;
  90.                double _d_o_u_b_l_e_V_a_l_u_e;
  91.           } Tcl_Value;
  92.  
  93.      The _t_y_p_e field indicates the type of  the  argument  and  is
  94.      either  TCL_INT  or  TCL_DOUBLE.  It will match the _a_r_g_T_y_p_e_s
  95.      value specified for the function unless the  _a_r_g_T_y_p_e_s  value
  96.      was  TCL_EITHER.  Tcl  converts the argument supplied in the
  97.      expression to the type requested in  _a_r_g_T_y_p_e_s,  if  that  is
  98.      necessary.   Depending  on  the value of the _t_y_p_e field, the
  99.      _i_n_t_V_a_l_u_e or _d_o_u_b_l_e_V_a_l_u_e field will contain the actual  value
  100.      of the argument.
  101.  
  102.      _P_r_o_c should compute its result and store  it  either  as  an
  103.      integer  in  _r_e_s_u_l_t_P_t_r->_i_n_t_V_a_l_u_e  or  as a floating value in
  104.      _r_e_s_u_l_t_P_t_r->_d_o_u_b_l_e_V_a_l_u_e.  It should set also  _r_e_s_u_l_t_P_t_r->_t_y_p_e
  105.      to  either TCL_INT or TCL_DOUBLE to indicate which value was
  106.      set.  Under normal circumstances _p_r_o_c should return  TCL_OK.
  107.      If an error occurs while executing the function, _p_r_o_c should
  108.      return TCL_ERROR and  leave  an  error  message  in  _i_n_t_e_r_p-
  109.      >_r_e_s_u_l_t.
  110.  
  111.  
  112. KEYWORDS
  113.      expression, mathematical function
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129. Tcl                                                             2
  130.  
  131.  
  132.  
  133.